/*
** IMediaPlayer - interface to media players
** This is not implemented anywhere in the SMSE2K core, call smse2k_HookMediaPlayer() to do this.
*/

#pragma once

// IMediaPlayer: The media player interface itself. This doesn't need to be hooked to the core;
// the core can do a lot of things by itself.
class IMediaPlayer {
	public: // Output controls
		virtual int OpenOutput(int channels, int sr) {return 1;} // Opens whatever output we're using (such as Winamp's output plugins).
		virtual void CloseOutput() {};							 // Closes the output device.
		virtual int GetOutputVolume() {return 0;}				 // Returns output volume
		virtual void SetOutputVolume(int volume) {};			 // Sets output volume
		
	public: // Playback controls
		virtual void Play() {};    // Calls the media player's play function.
		virtual void Stop() {};    // Calls the media player's stop function.
		virtual void Restart() {}; // Restarts playback of a track (e.g. if we're switching sub-tracks in Winamp)

	public: // Playlist controls (for stuff like Winamp)
		virtual void AddPlaylistTrack(const char* path) {};    // Adds a track to the playlist
		virtual void RemovePlaylistTrack(const char* path) {}; // Deletes a track from the playlist (by file name)
		virtual void RemovePlaylistTrack(int id) {};		   // Deletes a track from the playlist (by playlist ID)
};